This disclosure relates generally to the field of image processing and, more particularly, to various techniques and animation tools for allowing 2D and 3D graphics rendering and animation infrastructures to be able to dynamically render customized animations—without the need for the customized animations to be explicitly tied to any particular graphical entity. These animations, referred to herein as “entity agnostic” animations, may then be integrated into “mixed” graphical scenes (i.e., scenes with both two-dimensional and three-dimensional components), where they may be applied to any suitable graphical entity (e.g., a sprite, button, box, or other graphical object), visualized in real-time by the programmer, edited dynamically by the programmer, and shared across various computing platforms and environments that have support for the entity agnostic animation tools described herein.
Graphics rendering and animation infrastructures are commonly used by programmers today and provide a convenient means for rapid application development, such as for the development of gaming applications on mobile devices. Because graphics rendering and animation infrastructures may utilize the graphics hardware available on the hosting device to composite 2D, 3D, and mixed 2D and 3D scenes at high frame rates, programmers can create and use complex animations, “special effects,” texture atlases, etc., in games and other application with limited programming overhead.
For example, Sprite Kit, developed by APPLE INC., provides a graphics rendering and animation infrastructure that programmers may use to animate arbitrary textured two-dimensional images, or “sprites.” Sprite Kit uses a traditional rendering loop, whereby the contents of each frame are processed before the frame is rendered. Each individual game determines the contents of the scene and how those contents change in each frame. Sprite Kit then does the work to render the frames of animation efficiently using the graphics hardware on the hosting device. Sprite Kit is optimized so that the positions of sprites may be changed arbitrarily in each frame of animation.
Sprite Kit supports many different kinds of content, including: untextured or textured rectangles (i.e., sprites); text; arbitrary CGPath-based shapes; and video. Sprite Kit also provides support for cropping and other special effects. Because Sprite Kit supports a rich rendering infrastructure and handles all of the low-level work to submit drawing commands to OpenGL, the programmer may focus his or her efforts on solving higher-level design problems and creating great gameplay. The “Sprite Kit Programming Guide” (last updated Sep. 17, 2014) is hereby incorporated by reference in its entirety.
Three-dimensional graphics rendering and animation infrastructures are also commonly used by programmers today and provide a convenient means for developing applications with complex three-dimensional graphics, e.g., gaming applications using three-dimensional characters and/or environments. For example, Scene Kit, developed by APPLE INC., provides an Objective-C framework for building applications and games that use 3D graphics, combining a high-performance rendering engine with a high-level, descriptive API. Scene Kit supports the import, manipulation, and rendering of 3D assets. Unlike lower-level APIs, such as OpenGL, which require programmers to implement in precise detail the rendering algorithms that display a scene, Scene Kit only requires descriptions of the scene's contents and the actions or animations that the programmers want the objects in the scene to perform.
The Scene Kit framework offers a flexible, scene graph-based system to create and render virtual 3D scenes. With its node-based design, the Scene Kit scene graph abstracts most of the underlying internals of the used components from the programmer. Scene Kit does all the work underneath that is needed to render the scene efficiently using all the potential of the GPU. The “Scene Kit Programming Guide” (last updated Jul. 23, 2012) is hereby incorporated by reference in its entirety.
Finally, Core Animation, developed by APPLE INC., provides programmers with a graphics rendering and animation infrastructure available on both iOS and OS X that may be used to animate the views and other visual elements within an application (i.e., “app”). With Core Animation, most of the work required to draw each frame of an animation is done for the programmer automatically. All that the programmer has to do is configure a few animation parameters (such as the start and end points) and tell Core Animation to start. Core Animation then does the rest of the animation automatically, handing most of the actual drawing work off to the device's onboard graphics hardware to accelerate the rendering. This automatic graphics acceleration results in high frame rates and smooth animations without burdening the CPU and slowing down the app's operation. The “Core Animation Programming Guide” (last updated Mar. 9, 2015) is hereby incorporated by reference in its entirety.
As mentioned above, what is needed in order to provide greater functionality, efficiency, and interoperability between the aforementioned animation frameworks (or similar animation frameworks) is a tool for visualizing, creating, and manipulating asynchronous (and/or synchronous) animation actions on any number of graphical entities within a 2D, 3D, or “mixed” scene environment that is: dynamic, visual, entity-agnostic, and easy to modify, save, and share with other programmers.